using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._DataManagementTools._Raster._MosaicDataset
{
    /// <summary>
    /// <para>Alter Mosaic Dataset Schema</para>
    /// <para>Defines the editing operations that nonowners  have when editing a mosaic dataset in an enterprise geodatabase.</para>
    /// <para>定义非所有者在企业级地理数据库中编辑镶嵌数据集时所执行的编辑操作。</para>
    /// </summary>    
    [DisplayName("Alter Mosaic Dataset Schema")]
    public class AlterMosaicDatasetSchema : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public AlterMosaicDatasetSchema()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_mosaic_dataset">
        /// <para>Mosaic Dataset</para>
        /// <para>The mosaic dataset on which the permitted operations will be changed.</para>
        /// <para>将在其上更改允许操作的镶嵌数据集。</para>
        /// </param>
        public AlterMosaicDatasetSchema(object _in_mosaic_dataset)
        {
            this._in_mosaic_dataset = _in_mosaic_dataset;
        }
        public override string ToolboxName => "Data Management Tools";

        public override string ToolName => "Alter Mosaic Dataset Schema";

        public override string CallName => "management.AlterMosaicDatasetSchema";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_mosaic_dataset, _side_tables, _raster_type_names, _editor_tracking.GetGPValue(), _out_mosaic_dataset];

        /// <summary>
        /// <para>Mosaic Dataset</para>
        /// <para>The mosaic dataset on which the permitted operations will be changed.</para>
        /// <para>将在其上更改允许操作的镶嵌数据集。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Mosaic Dataset")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_mosaic_dataset { get; set; }


        /// <summary>
        /// <para>Operations</para>
        /// <para><xdoc>
        ///   <para>Specifies the operations that will be permissible for this mosaic dataset.</para>
        ///   <bulletList>
        ///     <bullet_item>Analysis—A nonowner will be allowed to run the Analyze Mosaic Dataset tool on the mosaic dataset.</bullet_item><para/>
        ///     <bullet_item>Boundary—A nonowner will be allowed to create or edit the boundary of the mosaic dataset. This is required if a nonowner will add raster datasets outside of the existing boundary.</bullet_item><para/>
        ///     <bullet_item>Cache—A nonowner will be allowed to create a cache for the mosaic dataset.</bullet_item><para/>
        ///     <bullet_item>Color correction—A nonowner will be allowed to color correct the mosaic dataset.</bullet_item><para/>
        ///     <bullet_item>Definition—A nonowner will be allowed to add multidimensional data or a processing template to the mosaic dataset.</bullet_item><para/>
        ///     <bullet_item>Levels— A nonowner will be allowed to calculate cell size ranges for the mosaic dataset.</bullet_item><para/>
        ///     <bullet_item>Log—A nonowner will be allowed to create a log table for the mosaic dataset.</bullet_item><para/>
        ///     <bullet_item>Overview— A nonowner will be allowed to create overviews for the mosaic dataset.</bullet_item><para/>
        ///     <bullet_item>Seamline—A nonowner will be allowed to create seamlines for the mosaic dataset.</bullet_item><para/>
        ///     <bullet_item>Stereo— A nonowner will be allowed to define stereo pairs for the mosaic dataset.</bullet_item><para/>
        ///     <bullet_item>View—A nonowner will be allowed to edit the image service. When selected, Enable Editor Tracking will automatically turn on.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定此镶嵌数据集允许的操作。</para>
        ///   <bulletList>
        ///     <bullet_item>分析—允许非所有者在镶嵌数据集上运行分析镶嵌数据集工具。</bullet_item><para/>
        ///     <bullet_item>边界—允许非所有者创建或编辑镶嵌数据集的边界。如果非所有者将在现有边界之外添加栅格数据集，则需要执行此操作。</bullet_item><para/>
        ///     <bullet_item>缓存—将允许非所有者为镶嵌数据集创建缓存。</bullet_item><para/>
        ///     <bullet_item>颜色校正—允许非所有者对镶嵌数据集进行颜色校正。</bullet_item><para/>
        ///     <bullet_item>定义 - 将允许非所有者向镶嵌数据集添加多维数据或处理模板。</bullet_item><para/>
        ///     <bullet_item>级别 - 允许非所有者计算镶嵌数据集的像元大小范围。</bullet_item><para/>
        ///     <bullet_item>日志—将允许非所有者为镶嵌数据集创建日志表。</bullet_item><para/>
        ///     <bullet_item>概述- 允许非所有者为镶嵌数据集创建概述。</bullet_item><para/>
        ///     <bullet_item>接缝线—允许非所有者为镶嵌数据集创建接线。</bullet_item><para/>
        ///     <bullet_item>立体 - 允许非所有者为镶嵌数据集定义立体对。</bullet_item><para/>
        ///     <bullet_item>视图 - 将允许非所有者编辑影像服务。选择后，启用编辑者跟踪将自动打开。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Operations")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _side_tables { get; set; } = null;


        /// <summary>
        /// <para>Raster Types</para>
        /// <para><xdoc>
        ///   <para>Specifies the raster types that nonowners can add to this mosaic dataset.</para>
        ///   <para>To select a custom raster type, enter the location of the custom raster type file.</para>
        ///   <bulletList>
        ///     <bullet_item>Airborne Digital Sensors— Leica ADS raster type</bullet_item><para/>
        ///     <bullet_item>Altum—Altum raster type</bullet_item><para/>
        ///     <bullet_item>ASTER—ASTER raster type</bullet_item><para/>
        ///     <bullet_item>CADRG/ECRG—CADRG/ECRG raster type</bullet_item><para/>
        ///     <bullet_item>CIB—CIB raster type</bullet_item><para/>
        ///     <bullet_item>Deimos-2— Deimos-2 raster type</bullet_item><para/>
        ///     <bullet_item>DTED—DTED raster type</bullet_item><para/>
        ///     <bullet_item>DMCii—DMCii raster type</bullet_item><para/>
        ///     <bullet_item>DubaiSat-2—DubaiSat-2 raster type</bullet_item><para/>
        ///     <bullet_item>FORMOSAT-2—FORMOSAT-2 raster type</bullet_item><para/>
        ///     <bullet_item>Frame Camera—Frame Camera raster type</bullet_item><para/>
        ///     <bullet_item>GeoEye—GeoEye-1 raster type</bullet_item><para/>
        ///     <bullet_item>GF-1 PMS—GF-1 PMS raster type</bullet_item><para/>
        ///     <bullet_item>GF-1 WFV—GF-1 WFV raster type</bullet_item><para/>
        ///     <bullet_item>GF-2 PMS—GF-2 PMS raster type</bullet_item><para/>
        ///     <bullet_item>GF-4 PMI—GF-4 PMI raster type</bullet_item><para/>
        ///     <bullet_item>GRIB—GRIB raster type</bullet_item><para/>
        ///     <bullet_item>HDF—HDF raster type</bullet_item><para/>
        ///     <bullet_item>HJ 1A/HJ 1B CCD—HJ 1A/HJ 1B CCD raster type</bullet_item><para/>
        ///     <bullet_item>HRE—HRE raster type</bullet_item><para/>
        ///     <bullet_item>IKONOS—IKONOS raster type</bullet_item><para/>
        ///     <bullet_item>Jilin-1—Jilin-1 raster type</bullet_item><para/>
        ///     <bullet_item>KOMPSAT-2—KOMPSAT-2 raster type</bullet_item><para/>
        ///     <bullet_item>KOMPSAT-3—KOMPSAT-3 raster type</bullet_item><para/>
        ///     <bullet_item>LAS— LAS raster type</bullet_item><para/>
        ///     <bullet_item>Landsat MSS—Landsat 1-5 MSS raster type</bullet_item><para/>
        ///     <bullet_item>Landsat TM—Landsat 4-5 TM raster type</bullet_item><para/>
        ///     <bullet_item>Landsat ETM+—Landsat 7 ETM+ raster type</bullet_item><para/>
        ///     <bullet_item>Landsat 8—Landsat 8 raster type</bullet_item><para/>
        ///     <bullet_item>NCDRD—NCDRD raster type</bullet_item><para/>
        ///     <bullet_item>NITF—NITF raster type</bullet_item><para/>
        ///     <bullet_item>NetCDF—NetCDF raster type</bullet_item><para/>
        ///     <bullet_item>PlanetScope—PlanetScope raster type</bullet_item><para/>
        ///     <bullet_item>Pleiades-1—Pleiades-1 raster type</bullet_item><para/>
        ///     <bullet_item>QuickBird—Quickbird raster type</bullet_item><para/>
        ///     <bullet_item>RADARSAT-2—RADARSAT-2 raster type</bullet_item><para/>
        ///     <bullet_item>RapidEye— RapidEye raster type</bullet_item><para/>
        ///     <bullet_item>Raster Process Definition—Raster Process Definition raster type</bullet_item><para/>
        ///     <bullet_item>RedEdge—RedEdge raster type</bullet_item><para/>
        ///     <bullet_item>Scanned aerial imagery—Scanned Aerial Imagery raster type</bullet_item><para/>
        ///     <bullet_item>Sentinel-1—Sentinel-1 raster type</bullet_item><para/>
        ///     <bullet_item>Sentinel-2—Sentinel-2 raster type</bullet_item><para/>
        ///     <bullet_item>Sentinel-3—Sentinel-3 raster type</bullet_item><para/>
        ///     <bullet_item>SkySat-C—SkySat-C raster type</bullet_item><para/>
        ///     <bullet_item>Spot 5—SPOT 5 raster type</bullet_item><para/>
        ///     <bullet_item>Spot 6—SPOT 6 raster type</bullet_item><para/>
        ///     <bullet_item>Spot 7—SPOT 7 raster type</bullet_item><para/>
        ///     <bullet_item>TeLEOS-1—TelEOS-1 raster type</bullet_item><para/>
        ///     <bullet_item>TH-01—TH-01 raster type</bullet_item><para/>
        ///     <bullet_item>UAV/UAS—UAV/UAS raster type</bullet_item><para/>
        ///     <bullet_item>WorldView-1—WorldView-1 raster type</bullet_item><para/>
        ///     <bullet_item>WorldView-2— WorldView-2 raster type</bullet_item><para/>
        ///     <bullet_item>WorldView-3—WorldView-3 raster type</bullet_item><para/>
        ///     <bullet_item>WorldView-4—WorldView-4 raster type</bullet_item><para/>
        ///     <bullet_item>ZY1-02C HRC—ZY1-02C HRC raster type</bullet_item><para/>
        ///     <bullet_item>ZY1-02C PMS—ZY1-02C PMS raster type</bullet_item><para/>
        ///     <bullet_item>ZY3-CRESDA—ZY3-CRESDA raster type</bullet_item><para/>
        ///     <bullet_item>ZY3-SASMAC—ZY3-SASMAC raster type</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定非所有者可以添加到此镶嵌数据集的栅格类型。</para>
        ///   <para>要选择自定义栅格类型，请输入自定义栅格类型文件的位置。</para>
        ///   <bulletList>
        ///     <bullet_item>机载数字传感器— Leica ADS 光栅类型</bullet_item><para/>
        ///     <bullet_item>Altum - Altum 栅格类型</bullet_item><para/>
        ///     <bullet_item>ASTER - ASTER 栅格类型</bullet_item><para/>
        ///     <bullet_item>CADRG/ECRG - CADRG/ECRG 栅格类型</bullet_item><para/>
        ///     <bullet_item>CIB - CIB 栅格类型</bullet_item><para/>
        ///     <bullet_item>Deimos-2 — Deimos-2 栅格类型</bullet_item><para/>
        ///     <bullet_item>DTED - DTED 栅格类型</bullet_item><para/>
        ///     <bullet_item>DMCii—DMCii栅格类型</bullet_item><para/>
        ///     <bullet_item>DubaiSat-2 - DubaiSat-2 栅格类型</bullet_item><para/>
        ///     <bullet_item>FORMOSAT-2 - FORMOSAT-2 栅格类型</bullet_item><para/>
        ///     <bullet_item>帧相机 （Frame Camera） - 帧相机栅格类型</bullet_item><para/>
        ///     <bullet_item>GeoEye - GeoEye-1 栅格类型</bullet_item><para/>
        ///     <bullet_item>GF-1 PMS—GF-1 PMS 栅格类型</bullet_item><para/>
        ///     <bullet_item>GF-1 WFV—GF-1 WFV栅格类型</bullet_item><para/>
        ///     <bullet_item>GF-2 PMS—GF-2 PMS 栅格类型</bullet_item><para/>
        ///     <bullet_item>GF-4 PMI—GF-4 PMI栅格类型</bullet_item><para/>
        ///     <bullet_item>GRIB - GRIB 栅格类型</bullet_item><para/>
        ///     <bullet_item>HDF - HDF 栅格类型</bullet_item><para/>
        ///     <bullet_item>HJ 1A/HJ 1B CCD—HJ 1A/HJ 1B CCD 光栅类型</bullet_item><para/>
        ///     <bullet_item>HRE - HRE 栅格类型</bullet_item><para/>
        ///     <bullet_item>IKONOS - IKONOS 栅格类型</bullet_item><para/>
        ///     <bullet_item>吉林一号—吉林一号栅格类型</bullet_item><para/>
        ///     <bullet_item>KOMPSAT-2—KOMPSAT-2 栅格类型</bullet_item><para/>
        ///     <bullet_item>KOMPSAT-3 - KOMPSAT-3 栅格类型</bullet_item><para/>
        ///     <bullet_item>LAS— LAS 栅格类型</bullet_item><para/>
        ///     <bullet_item>Landsat MSS - Landsat 1-5 MSS 栅格类型</bullet_item><para/>
        ///     <bullet_item>Landsat TM - Landsat 4-5 TM 栅格类型</bullet_item><para/>
        ///     <bullet_item>Landsat ETM+ - Landsat 7 ETM+ 栅格类型</bullet_item><para/>
        ///     <bullet_item>Landsat 8 - Landsat 8 栅格类型</bullet_item><para/>
        ///     <bullet_item>NCDRD - NCDRD 栅格类型</bullet_item><para/>
        ///     <bullet_item>NITF - NITF 栅格类型</bullet_item><para/>
        ///     <bullet_item>NetCDF - NetCDF 栅格类型</bullet_item><para/>
        ///     <bullet_item>PlanetScope - PlanetScope 栅格类型</bullet_item><para/>
        ///     <bullet_item>昴宿星团-1 - 昴宿星团-1栅格类型</bullet_item><para/>
        ///     <bullet_item>QuickBird - Quickbird 栅格类型</bullet_item><para/>
        ///     <bullet_item>RADARSAT-2—RADARSAT-2栅格类型</bullet_item><para/>
        ///     <bullet_item>RapidEye— RapidEye 栅格类型</bullet_item><para/>
        ///     <bullet_item>栅格过程定义 - 栅格过程定义栅格类型</bullet_item><para/>
        ///     <bullet_item>RedEdge - RedEdge 栅格类型</bullet_item><para/>
        ///     <bullet_item>扫描的航空影像 - 扫描的航空影像栅格类型</bullet_item><para/>
        ///     <bullet_item>Sentinel-1 - Sentinel-1 栅格类型</bullet_item><para/>
        ///     <bullet_item>Sentinel-2 - Sentinel-2 栅格类型</bullet_item><para/>
        ///     <bullet_item>Sentinel-3 - Sentinel-3 栅格类型</bullet_item><para/>
        ///     <bullet_item>SkySat-C - SkySat-C 栅格类型</bullet_item><para/>
        ///     <bullet_item>斑点 5 - 斑点 5 栅格类型</bullet_item><para/>
        ///     <bullet_item>Spot 6 - SPOT 6 栅格类型</bullet_item><para/>
        ///     <bullet_item>Spot 7 - SPOT 7 栅格类型</bullet_item><para/>
        ///     <bullet_item>TeLEOS-1—TelEOS-1 栅格类型</bullet_item><para/>
        ///     <bullet_item>TH-01—TH-01 栅格类型</bullet_item><para/>
        ///     <bullet_item>UAV/UAS—UAV/UAS栅格类型</bullet_item><para/>
        ///     <bullet_item>WorldView-1 - WorldView-1 栅格类型</bullet_item><para/>
        ///     <bullet_item>WorldView-2 - WorldView-2 栅格类型</bullet_item><para/>
        ///     <bullet_item>WorldView-3 - WorldView-3 栅格类型</bullet_item><para/>
        ///     <bullet_item>WorldView-4 - WorldView-4 栅格类型</bullet_item><para/>
        ///     <bullet_item>ZY1-02C HRC—ZY1-02C HRC栅格类型</bullet_item><para/>
        ///     <bullet_item>ZY1-02C PMS—ZY1-02C PMS栅格类型</bullet_item><para/>
        ///     <bullet_item>ZY3-CRESDA - ZY3-CRESDA 栅格类型</bullet_item><para/>
        ///     <bullet_item>ZY3-SASMAC - ZY3-SASMAC 栅格类型</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Raster Types")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _raster_type_names { get; set; } = null;


        /// <summary>
        /// <para>Enable Editor Tracking</para>
        /// <para><xdoc>
        ///   <para>Specifies whether enable editor tracking will be activated.</para>
        ///   <para>Editor tracking can help you maintain accountability and enforce quality-control standards.</para>
        ///   <bulletList>
        ///     <bullet_item>Unchecked—Editor tracking will not be activated. This is the default.</bullet_item><para/>
        ///     <bullet_item>Checked—Editor tracking will be activated for your mosaic dataset.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>If the View keyword is used in the Operations parameter, editor tracking will automatically be activated.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否激活启用编辑者跟踪。</para>
        ///   <para>编辑跟踪可以帮助您保持问责制并执行质量控制标准。</para>
        ///   <bulletList>
        ///     <bullet_item>未选中 - 不会激活编辑者追踪。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>选中 - 将为您的镶嵌数据集激活编辑者追踪。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>如果在 Operations 参数中使用了 View 关键字，则将自动激活编辑者跟踪。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Enable Editor Tracking")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _editor_tracking_value _editor_tracking { get; set; } = _editor_tracking_value._false;

        public enum _editor_tracking_value
        {
            /// <summary>
            /// <para>EDITOR_TRACKING</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("EDITOR_TRACKING")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_EDITOR_TRACKING</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_EDITOR_TRACKING")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Updated Mosaic Dataset</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Updated Mosaic Dataset")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_mosaic_dataset { get; set; }


        public AlterMosaicDatasetSchema SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}